package com.wymobilearchitecture.demo.kt

fun main(){

    Person.eat()
    Utils.formatTime()
    println(append('a','b','c'))
    println("magic(): ${magic()}")
}



class Person{

    /**
     * 静态方法
     */
    companion object{
        fun eat(){
            println("eat")
        }
    }

    /**
     * 成员方法
     */
    fun run(){
        println("run")
    }
}


/**
 * object 修饰的类里面方法都是静态方法
 */
object Utils{

  fun formatTime(){
      println("formatTime")
  }
}


/**
 * 单表达式方法,当方法返回单个表达式时,可以省略花括号并且在 = 符号之后指定代码体即可
 */
fun double(x : Int) = x * 2

/**
 * 默认值,参数可以有默认值,可以减少重载数量
 */
fun read(b : Array<Byte>,off : Int = 0,len : Int = b.size){

}

/**
 * 可变数量参数
 */
fun append(vararg  str:Char): String{
    val  result = StringBuffer()
    for (c in str){
        result.append(c)
    }

    return result.toString()
}


/**
 * 局部方法-方法内在定义方法
 */
fun magic() : Int{

    fun foo(v : Int) : Int{
        return (v * v)
    }

    val v1 = (0..100).random()
    return foo(v1)
}
